#include <iostream>
#include <thread>
#include <atomic>
#include <future>

// 全局变量
std::atomic<int> globalVariable(0);

// 线程函数：对全局变量进行递增操作
void incrementGlobalVariable(std::promise<int>& resultPromise) 
{
    // 进行递增操作
    for (int i = 0; i < 100; ++i) 
    {
        ++globalVariable;
    }
    // 将结果传递给主线程
    resultPromise.set_value(globalVariable.load());
}

int main() 
{
    // 创建一个 promise 对象和与之关联的 future 对象
    std::promise<int> resultPromise;
    std::future<int> resultFuture = resultPromise.get_future();

    // 创建并启动一个线程
    std::thread workerThread(incrementGlobalVariable, std::ref(resultPromise));

    // 等待线程完成
    workerThread.join();

    // 从 future 对象中获取结果
    int result = resultFuture.get();

    // 打印结果
    std::cout << "Final value of globalVariable: " << result << std::endl;

    return 0;
}